#ifndef MAIN_H
#define MAIN_H

#include "node.h"
#include <cstring>
#include <vector>
#include <string>


struct Type {
    std::string stringValue;
    char* charValue;
    int intValue;
    bool boolValue;
    double doubleValue;
    TableStmt* tableStmt;

//**********InsertStmt*********
    std::vector<LiteralValue*> attrValue;
    std::vector<std::string> NameList;
    std::vector< std::vector<LiteralValue*> > attrValueList;
    InsertStmt* insertStmt;
    LiteralValue* literal_Value;

//*********CreatTableStmt******
    std::vector<ColumnDec*> columnDecList;
    ColumnDec* columnDec;
    ColumnType* columnType;
    PrimaryKey* primaryKey;

//********WhereClauses*********
    std::vector<AttrExpr*> attrExprList;
    AttrExpr* attrExpr;
    std::vector<BoolExpr*> whereClause;
    BoolExpr* boolExpr;
    ValueExpr* valueExpr;
    WhereExpr* whereExpr;

//*******UpdateStmt************
    SetStmt* setStmt;
    vector<SetStmt*> setStmtList;

//******SelectStmt************
    AggregateFunction* aggregateFunc;
    std::vector<AggregateFunction*> aggregateList;
};
#define YYSTYPE Type
#endif


